package com.flight.view;

import com.flight.util.DateUtil;
import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.awt.event.ActionListener;
import java.util.Date;

public class FlightSearchPanel extends JPanel {
    private JTextField depCityField;
    private JTextField arrCityField;
    private JTextField depDateField;
    private JButton searchBtn;
    private JButton backBtn; // 返回主界面按钮
    private JTable flightTable;
    private JPanel conditionPanel;

    public FlightSearchPanel() {
        initUI();
    }

    private void initUI() {
        setLayout(new BorderLayout());

        // 顶部面板：分上下两行（第一行查询条件，第二行返回按钮）
        JPanel topPanel = new JPanel(new BorderLayout(10, 10));
        topPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));

        // 第一行：查询条件（使用 FlowLayout 避免挤压）
        conditionPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 20, 10));
        conditionPanel.add(new JLabel("出发地："));
        depCityField = new JTextField(10); // 固定输入框宽度
        conditionPanel.add(depCityField);

        conditionPanel.add(new JLabel("目的地："));
        arrCityField = new JTextField(10);
        conditionPanel.add(arrCityField);

        conditionPanel.add(new JLabel("出发日期（yyyy-MM-dd）："));
        depDateField = new JTextField(12);
        conditionPanel.add(depDateField);

        searchBtn = new JButton("查询");
        conditionPanel.add(searchBtn);
        topPanel.add(conditionPanel, BorderLayout.NORTH);

        // 第二行：返回按钮（靠右显示）
        JPanel backPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
        backBtn = new JButton("返回主界面");
        backPanel.add(backBtn);
        topPanel.add(backPanel, BorderLayout.SOUTH);

        add(topPanel, BorderLayout.NORTH);

        // 航班列表表格
        String[] columnNames = {"航班号", "出发地", "目的地", "出发时间", "余票", "操作"};
        Object[][] data = {};
        flightTable = new JTable(data, columnNames);
        add(new JScrollPane(flightTable), BorderLayout.CENTER);
    }

    // 绑定返回主界面按钮事件
    public void addBackListener(ActionListener listener) {
        backBtn.addActionListener(listener);
    }

    // 获取出发日期
    public Date getDepDate() {
        try {
            return DateUtil.parseDate(depDateField.getText().trim());
        } catch (Exception e) {
            return null; // 日期格式错误
        }
    }

    // 绑定查询按钮事件
    public void addSearchListener(ActionListener listener) {
        searchBtn.addActionListener(listener);
    }

    // 更新航班表格数据
    public void updateFlightTable(Object[][] data) {
        String[] columnNames = {"航班号", "出发地", "目的地", "出发时间", "余票", "操作"};
        flightTable.setModel(new DefaultTableModel(data, columnNames));
    }

    // 显示提示信息
    public void showMessage(String msg) {
        JOptionPane.showMessageDialog(this, msg);
    }

    //  getter方法
    public String getDepCity() { return depCityField.getText().trim(); }
    public String getArrCity() { return arrCityField.getText().trim(); }
    public JTable getFlightTable() { return flightTable; }
    // 暴露查询条件面板（供 FlightSearchController 使用）
    public JPanel getConditionPanel() {
        return conditionPanel;
    }
}

//package com.flight.view;
//
//import com.flight.util.DateUtil;
//import javax.swing.*;
//import javax.swing.table.DefaultTableModel; // 新增导入
//import java.awt.*;
//import java.awt.event.ActionListener;
//import java.util.Date;
//
//public class FlightSearchPanel extends JPanel {
//    private JTextField depCityField;
//    private JTextField arrCityField;
//    private JTextField depDateField;
//    private JButton searchBtn;
//    private JTable flightTable;
//    private JPanel conditionPanel;
//    private JButton backBtn; // 返回主界面按钮
//
//    public FlightSearchPanel() {
//        initUI();
//    }
//
//    private void initUI() {
//        setLayout(new BorderLayout());
//
//        // 查询条件面板
//        JPanel topPanel = new JPanel(new BorderLayout());
//
//        conditionPanel = new JPanel(new GridLayout(1, 4, 10, 10));
//        conditionPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
//
//        conditionPanel.add(new JLabel("出发地："));
//        depCityField = new JTextField();
//        conditionPanel.add(depCityField);
//
//        conditionPanel.add(new JLabel("目的地："));
//        arrCityField = new JTextField();
//        conditionPanel.add(arrCityField);
//
//        conditionPanel.add(new JLabel("出发日期（yyyy-MM-dd）："));
//        depDateField = new JTextField();
//        conditionPanel.add(depDateField);
//
//        searchBtn = new JButton("查询");
//        conditionPanel.add(searchBtn);
//
////        add(conditionPanel, BorderLayout.NORTH);
//
//
//        // 添加返回按钮到顶部面板右侧
//        backBtn = new JButton("返回主界面");
//        JPanel backPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
//        backPanel.add(backBtn);
//        topPanel.add(conditionPanel, BorderLayout.CENTER);
//        topPanel.add(backPanel, BorderLayout.EAST);
//
//        add(topPanel, BorderLayout.NORTH);
//
//        // 航班列表表格
//        String[] columnNames = {"航班号", "出发地", "目的地", "出发时间", "余票", "操作"};
//        Object[][] data = {};
//        flightTable = new JTable(data, columnNames);
//        add(new JScrollPane(flightTable), BorderLayout.CENTER);
//    }
//
//
//    // 新增：绑定返回主界面按钮事件
//    public void addBackListener(ActionListener listener) {
//        backBtn.addActionListener(listener);
//    }
//
//    // 获取出发日期
//    public Date getDepDate() {
//        try {
//            return DateUtil.parseDate(depDateField.getText().trim());
//        } catch (Exception e) {
//            return null; // 日期格式错误
//        }
//    }
//
//    // 绑定查询按钮事件
//    public void addSearchListener(ActionListener listener) {
//        searchBtn.addActionListener(listener);
//    }
//
//    // 更新航班表格数据
//    public void updateFlightTable(Object[][] data) {
//        String[] columnNames = {"航班号", "出发地", "目的地", "出发时间", "余票", "操作"};
//        flightTable.setModel(new DefaultTableModel(data, columnNames)); // 已修正导入
//    }
//
//    // 显示提示信息
//    public void showMessage(String msg) {
//        JOptionPane.showMessageDialog(this, msg);
//    }
//
//    // 其他getter方法
//    public String getDepCity() { return depCityField.getText().trim(); }
//    public String getArrCity() { return arrCityField.getText().trim(); }
//    public JPanel getConditionPanel() { return conditionPanel; }
//}